home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / amiexpress / source / ae / code / acp3.00 / iconinfo.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-18  |  11.6 KB  |  312 lines

  1. #include <exec/exec.h>
  2. #include <dos/dosextens.h>
  3. #include <libraries/dos.h>
  4. #include <workbench/workbench.h>
  5. #include <clib/alib_protos.h>
  6. #include <clib/exec_protos.h>
  7. #include <clib/dos_protos.h>
  8. #include <clib/icon_protos.h>
  9. #include <stdio.h>
  10. #include  <stdlib.h>
  11. #include <string.h>
  12. #include "aclvl.h"
  13. struct Commands {
  14.     UBYTE    AcLvl[100],
  15.         SerDevUnit;
  16.     char    SerDev[40],
  17.         NEW_UserPW[15];
  18.     long    OpeningBaud;
  19.     BYTE    TaskPri;
  20.     char    ConfName[9][60],
  21.         ConfLoc[9][60],
  22.         BBSName[41],
  23.         BBSLoc[41],
  24.         SysopName[41];
  25.     UBYTE    PSAcLvl[6],
  26.         PSRType[6],
  27.         PSRatio[6];
  28.     long    PSDBytes[6],
  29.         PSTime[6];
  30.     char    PSCnfAc[6][10],
  31.         MInit[101],
  32.         MReset[31],
  33.         MRing[31],
  34.         MAnswer[31],
  35.         MC300[31],
  36.         MC1200[31],
  37.         MC2400[31],
  38.         MC4800[31],
  39.         MC9600[31],
  40.         MC19200[31];
  41.     short    NumConf;
  42.     char    SysPass[31],
  43.         RemotePass[31];
  44.     USHORT    BaudTimes[10];
  45.     char    Pad[18];
  46.     };
  47. struct StartOption
  48. {
  49.   SHORT LeftEdge;
  50.   SHORT TopEdge;
  51.   SHORT Width;
  52.   SHORT Height;
  53.   int BitPlanes;
  54.   BOOL StatBar;
  55.   BOOL Interlace;
  56.   BOOL DupeCheck;
  57.   BOOL QLogon;
  58.   BOOL TakeCredits;
  59.   BOOL SeenIt;
  60.   BOOL TrapDoor;
  61.   BOOL Iconify;
  62.   BOOL RadBoogie;
  63.   BOOL A2232;
  64.   BOOL Toggles[20];
  65.   char Logoff[80];
  66.   char ShutDown[80];
  67.   char CycleLock[80];
  68.   char RamPen[80];
  69.   char BBSConfig[80];
  70.   char FilesNot[80];
  71.   char UserData[80];
  72.   char UserKey[80];
  73.   char OffHook[80];
  74.   char PubScreen[80];
  75.   APTR MasterSemi;
  76.   APTR SingleSemi;
  77. };
  78.  
  79. extern struct Commands *Cmds[];
  80. extern struct StartOption *Sopt[];
  81. extern BOOL NodeIdle[];
  82. extern char StartNode[11][80];
  83. extern BOOL StartUp;
  84. struct FileLock      *pdir = NULL;
  85. struct FileInfoBlock *dir_info = NULL;
  86. extern struct Library *IconBase;
  87. void free_pdir(void);
  88.  
  89. #define StripInfo(x,y) x=strlen(y)-1; while(x>-1) { if(y[x]=='.') { y[x]='\0'; break; } x--; }
  90.  
  91. #define CMDOPT(x,y) for(j=0;j<MaxNodes;j++) Cmds[j]->AcLvl[x]=y 
  92. #define ACS(x) s=FindToolType(oldtooltypes,x)
  93. int GetFileName(char *path,char *buf);
  94. void GetIconBBSInfo(int MaxNodes)
  95. {
  96.    struct DiskObject *dobj;
  97.    char **oldtooltypes;
  98.    char *s;
  99.    register int j;
  100.    register int i;
  101.    int def;
  102.    char temp[100];
  103.    sprintf(temp,"%sCONFCONFIG",Cmds[0]->BBSLoc);
  104.    dobj=GetDiskObject(temp);
  105.    if(dobj)
  106.    {
  107.       oldtooltypes=dobj->do_ToolTypes;
  108.       if(s=FindToolType(oldtooltypes,"RELATIVE_CONFERENCES")) for(i=0;i<MaxNodes;i++) Sopt[i]->Toggles[1]=1;
  109.       FreeDiskObject(dobj);
  110.    } 
  111.    sprintf(temp,"%sACCESS",Cmds[0]->BBSLoc);
  112.    dobj=GetDiskObject(temp);
  113.    if(!dobj) return;
  114.    oldtooltypes=dobj->do_ToolTypes;
  115.    def=0;
  116.    if(ACS("ACS.ACCOUNT_EDITING"))    CMDOPT(ACCOUNT_EDITING,1); else CMDOPT(ACCOUNT_EDITING,def);
  117.    if(ACS("ACS.COMMENT_TO_SYSOP"))   CMDOPT(COMMENT_TO_SYSOP,1);else CMDOPT(COMMENT_TO_SYSOP,def);
  118.    if(ACS("ACS.DOWNLOAD"))           CMDOPT(DOWNLOAD,1);        else CMDOPT(DOWNLOAD,def);
  119.    if(ACS("ACS.ENTER_MESSAGE"))      CMDOPT(ENTER_MESSAGE,1);   else CMDOPT(ENTER_MESSAGE,def);
  120.    if(ACS("ACS.FILE_LISTINGS"))      CMDOPT(FILE_LISTINGS,1);   else CMDOPT(FILE_LISTINGS,def);
  121.    if(ACS("ACS.JOIN_CONFERENCE"))    CMDOPT(JOIN_CONFERENCE,1); else CMDOPT(JOIN_CONFERENCE,def);
  122.    if(ACS("ACS.NEW_FILES_SINCE"))    CMDOPT(NEW_FILES_SINCE,1); else CMDOPT(NEW_FILES_SINCE,def);
  123.    if(ACS("ACS.PAGE_SYSOP"))         CMDOPT(PAGE_SYSOP,1);      else CMDOPT(PAGE_SYSOP,def);
  124.    if(ACS("ACS.READ_MESSAGE"))       CMDOPT(READ_MSG,1);    else CMDOPT(READ_MSG,def);
  125.    if(ACS("ACS.DISPLAY_USER_STATS")) CMDOPT(DISPLAY_USER_STATS,1); else CMDOPT(DISPLAY_USER_STATS,def);
  126.    if(ACS("ACS.UPLOAD"))             CMDOPT(UPLOAD,1); else CMDOPT(UPLOAD,def);
  127.    if(ACS("ACS.VIEW_A_FILE"))        CMDOPT(VIEW_A_FILE,1); else CMDOPT(VIEW_A_FILE,def);
  128.    if(ACS("ACS.EDIT_USER_INFO"))     CMDOPT(EDIT_USER_INFO,1); else CMDOPT(EDIT_USER_INFO,def);
  129.    if(ACS("ACS.REMOTE_SHELL"))       CMDOPT(REMOTE_SHELL,1); else CMDOPT(REMOTE_SHELL,def);
  130.    if(ACS("ACS.ZIPPY_TEXT_SEARCH"))  CMDOPT(ZIPPY_TEXT_SEARCH,1); else CMDOPT(ZIPPY_TEXT_SEARCH,def);
  131.    if(ACS("ACS.OVERIDE_CHAT"))       CMDOPT(OVERRIDE_CHAT,1); else CMDOPT(OVERRIDE_CHAT,def);
  132.    if(ACS("ACS.EDIT_USER_NAME"))     CMDOPT(EDIT_USER_NAME,1); else CMDOPT(EDIT_USER_NAME,def);
  133.    if(ACS("ACS.EDIT_USER_LOCATION")) CMDOPT(EDIT_USER_LOCATION,1); else CMDOPT(EDIT_USER_LOCATION,def);
  134.    if(ACS("ACS.EDIT_PHONE_NUMBER"))  CMDOPT(EDIT_PHONE_NUMBER,1); else CMDOPT(EDIT_PHONE_NUMBER,def);
  135.    if(ACS("ACS.EDIT_PASSWORD"))      CMDOPT(EDIT_PASSWORD,1); else CMDOPT(EDIT_PASSWORD,def);
  136.    if(ACS("ACS.OVERIDE_TIMES"))      CMDOPT(OVERRIDE_TIMES,1); else CMDOPT(OVERRIDE_TIMES,def);
  137.    if(ACS("ACS.SYSOP_READ"))         CMDOPT(SYSOP_READ,1); else CMDOPT(SYSOP_READ,def);
  138.    if(ACS("ACS.READ_BULLETINS"))     CMDOPT(BULLETINS,1); else CMDOPT(BULLETINS,def); 
  139.    if(ACS("ACS.EALL_MESSAGES"))
  140.    {
  141.       for(i=0;i<MaxNodes;i++) Sopt[i]->RadBoogie=1;
  142.    }
  143.    else for(i=0;i<MaxNodes;i++) Sopt[i]->RadBoogie=def;
  144.    FreeDiskObject(dobj);
  145. }   
  146.    
  147. void GetIconNodeInfo(int i)
  148. {
  149.    struct DiskObject *dobj;
  150.    char **oldtooltypes;
  151.    char *s;
  152.    char Basis[200];
  153.    char FileName[200];
  154.    char temp[100];
  155.    int j;
  156.    sprintf(Basis,"%sNode%d/Modem",Cmds[i]->BBSLoc,i);
  157.    if(GetFileName(Basis,FileName))
  158.    {
  159.       StripInfo(j,FileName);
  160.       sprintf(Basis,"%sNode%d/Modem/%s",Cmds[i]->BBSLoc,i,FileName);
  161.       dobj=GetDiskObject(Basis);
  162.       if(dobj!=NULL)
  163.       {
  164.          oldtooltypes=dobj->do_ToolTypes;
  165.          if(s=FindToolType(oldtooltypes,"MODEM.INIT")) strcpy(Cmds[i]->MInit,s);
  166.          if(s=FindToolType(oldtooltypes,"MODEM.RESET")) strcpy(Cmds[i]->MReset,s);
  167.          if(s=FindToolType(oldtooltypes,"MODEM.RING")) strcpy(Cmds[i]->MRing,s);
  168.          if(s=FindToolType(oldtooltypes,"MODEM.ANSWER")) strcpy(Cmds[i]->MAnswer,s);
  169.          if(s=FindToolType(oldtooltypes,"MODEM.OFFHOOK")) strcpy(Sopt[i]->OffHook,s);
  170.          if(s=FindToolType(oldtooltypes,"MODEM.CALLERID-1")) Sopt[i]->Toggles[15]=1;
  171.          if(s=FindToolType(oldtooltypes,"MODEM.CALLERID-2")) Sopt[i]->Toggles[16]=1;
  172.           FreeDiskObject(dobj);
  173.       }
  174.    }
  175.    sprintf(Basis,"%sNode%d/Serial",Cmds[i]->BBSLoc,i);
  176.    if(GetFileName(Basis,FileName))
  177.    {
  178.       StripInfo(j,FileName);
  179.       sprintf(Basis,"%sNode%d/Serial/%s",Cmds[i]->BBSLoc,i,FileName);
  180.       dobj=GetDiskObject(Basis);
  181.       if(dobj!=NULL)
  182.       {
  183.          oldtooltypes=dobj->do_ToolTypes;
  184.          if(s=FindToolType(oldtooltypes,"SERIAL.UNIT")) Cmds[i]->SerDevUnit=atoi(s);
  185.          if(s=FindToolType(oldtooltypes,"SERIAL.BAUD")) Cmds[i]->OpeningBaud=atol(s);
  186.          if(s=FindToolType(oldtooltypes,"SERIAL.DRIVER")) strcpy(Cmds[i]->SerDev,s);
  187.          if(s=FindToolType(oldtooltypes,"SERIAL.A2232_PATCH")) Sopt[i]->A2232=TRUE;
  188.          if(s=FindToolType(oldtooltypes,"SERIAL.NO_PURGELINE")) Sopt[i]->Toggles[11]=1;
  189.          if(s=FindToolType(oldtooltypes,"SERIAL.REPURGE")) Sopt[i]->Toggles[12]=1;
  190.          if(s=FindToolType(oldtooltypes,"SERIAL.LOGOFF_RESET")) Sopt[i]->Toggles[17]=1;
  191.          if(s=FindToolType(oldtooltypes,"SERIAL.TRUE_RESET")) Sopt[i]->Toggles[0]=1;
  192.            FreeDiskObject(dobj);
  193.       }
  194.     }
  195.     sprintf(FileName,"%sNode%d/WINDOW.DEF",Cmds[i]->BBSLoc,i);
  196.     dobj=GetDiskObject(FileName);
  197.     if(dobj)
  198.     {
  199.        oldtooltypes=dobj->do_ToolTypes;
  200.        if(s=FindToolType(oldtooltypes,"WINDOW.LEFTEDGE")) Sopt[i]->LeftEdge=atoi(s);
  201.        if(s=FindToolType(oldtooltypes,"WINDOW.TOPEDGE")) Sopt[i]->TopEdge=atoi(s);
  202.        if(s=FindToolType(oldtooltypes,"WINDOW.HEIGHT")) Sopt[i]->Height=atoi(s);
  203.        if(s=FindToolType(oldtooltypes,"WINDOW.WIDTH")) Sopt[i]->Width=atoi(s);
  204.        if(s=FindToolType(oldtooltypes,"WINDOW.STATBAR")) Sopt[i]->StatBar=TRUE;
  205.        if(s=FindToolType(oldtooltypes,"WINDOW.ICONIFIED")) Sopt[i]->Iconify=TRUE;
  206.        if(s=FindToolType(oldtooltypes,"WINDOW.INTERLACE")) Sopt[i]->Interlace=TRUE;
  207.        if(s=FindToolType(oldtooltypes,"WINDOW.TO_FRONT")) Cmds[i]->AcLvl[SCREEN_TO_FRONT]=1;
  208.        if(s=FindToolType(oldtooltypes,"WINDOW.NUM_COLORS"))
  209.        {
  210.           j=atoi(s);
  211.           switch(j)
  212.           {
  213.             case 0: Sopt[i]->BitPlanes=0; break;
  214.             case 1:
  215.             case 2: Sopt[i]->BitPlanes=1; break;
  216.             case 3:
  217.             case 4: Sopt[i]->BitPlanes=2; break;
  218.             case 5:
  219.             case 6: 
  220.             case 7:
  221.             case 8: Sopt[i]->BitPlanes=3; break;
  222.             default: Sopt[i]->BitPlanes=3; break; 
  223.           }
  224.        }
  225.        FreeDiskObject(dobj);
  226.     }
  227.      sprintf(FileName,"%sNode%d",Cmds[i]->BBSLoc,i);
  228.     dobj=GetDiskObject(FileName);
  229.     if(dobj)
  230.     {
  231.        oldtooltypes=dobj->do_ToolTypes;
  232.        if(s=FindToolType(oldtooltypes,"SYSTEM_PASSWORD")) strcpy(Cmds[i]->SysPass,s);
  233.        if(s=FindToolType(oldtooltypes,"REMOTE_PASSWORD")) strcpy(Cmds[i]->RemotePass,s);
  234.        if(s=FindToolType(oldtooltypes,"NEWUSER_PASSWORD")) strcpy(Cmds[i]->NEW_UserPW,s);
  235.        if(s=FindToolType(oldtooltypes,"PRIORITY")) Cmds[i]->TaskPri=atoi(s);
  236.        if(s=FindToolType(oldtooltypes,"QUIETNODE")) Sopt[i]->Toggles[9]=TRUE;
  237.        if(s=FindToolType(oldtooltypes,"NODESTART")) 
  238.        {
  239.          strcpy(Basis,s);
  240.          sprintf(FileName,"%s %d",Basis,i);
  241.          strcpy(&StartNode[i][0],FileName);
  242.          StartUp=TRUE;
  243.        }
  244.          
  245.        if(s=FindToolType(oldtooltypes,"IDLENODE")) NodeIdle[i]=1;
  246.        if(s=FindToolType(oldtooltypes,"TRAPDOOR")) Sopt[i]->TrapDoor=TRUE;
  247.        if(s=FindToolType(oldtooltypes,"PLAYPEN")) strcpy(Sopt[i]->RamPen,s);
  248.        if(s=FindToolType(oldtooltypes,"SENTBY_FILES")) Cmds[i]->AcLvl[SENTBY_FILES]=1;
  249.        if(s=FindToolType(oldtooltypes,"CHAT_ON")) Cmds[i]->AcLvl[DEFAULT_CHAT_ON]=1;
  250.        if(s=FindToolType(oldtooltypes,"CAPITOL_FILES")) Cmds[i]->AcLvl[CAPITOLS_in_FILE]=1;
  251.        if(s=FindToolType(oldtooltypes,"SYSOP_CHAT_COLOR")) Cmds[i]->AcLvl[CHAT_COLOR_SYSOP]=atoi(s);
  252.        if(s=FindToolType(oldtooltypes,"USER_CHAT_COLOR")) Cmds[i]->AcLvl[CHAT_COLOR_USER]=atoi(s);
  253.        if(s=FindToolType(oldtooltypes,"KEEP_UPLOAD_CREDIT")) Cmds[i]->AcLvl[KEEP_UPLOAD_CREDIT]=atoi(s);
  254.        if(s=FindToolType(oldtooltypes,"FREE_RESUMING")) Cmds[i]->AcLvl[ALLOW_FREE_RESUMING]=1;
  255.        if(s=FindToolType(oldtooltypes,"CALLERS_LOG")) Cmds[i]->AcLvl[DO_CALLERSLOG]=1;
  256.        if(s=FindToolType(oldtooltypes,"UD_LOG")) Cmds[i]->AcLvl[DO_UD_LOG]=1;
  257.        if(s=FindToolType(oldtooltypes,"DOOR_LOG")) Sopt[i]->Toggles[2]=1;
  258.        if(s=FindToolType(oldtooltypes,"START_LOG")) Sopt[i]->Toggles[3]=1;
  259.        if(s=FindToolType(oldtooltypes,"NO_TIMEOUT")) Sopt[i]->Toggles[4]=1;
  260.        if(s=FindToolType(oldtooltypes,"NO_MCI_MSG")) Sopt[i]->Toggles[5]=1; 
  261.        if(s=FindToolType(oldtooltypes,"BREAK_CHAT")) Sopt[i]->Toggles[7]=1;
  262.        if(s=FindToolType(oldtooltypes,"NO_WILDCARD_EXPANSION")) Sopt[i]->Toggles[14]=0; else
  263.                                       Sopt[i]->Toggles[14]=1;
  264.        if(s=FindToolType(oldtooltypes,"DISABLE_QUICK_LOGONS")) Sopt[i]->QLogon=1;
  265.        if(s=FindToolType(oldtooltypes,"FILESNOTALLOWED")) strcpy(Sopt[i]->FilesNot,s);
  266.        if(s=FindToolType(oldtooltypes,"SCREENS")) strcpy(Sopt[i]->PubScreen,s); else
  267.        {
  268.           sprintf(temp,"%sNode%d/",Cmds[i]->BBSLoc,i); strcpy(Sopt[i]->PubScreen,temp);
  269.        }
  270.        FreeDiskObject(dobj);
  271.     }
  272.           
  273.  
  274. }
  275. int GetFileName(char *path,char *buf)
  276. {
  277.    int returnval=0;
  278.    if ((dir_info =(struct FileInfoBlock *)AllocMem((long)sizeof(struct FileInfoBlock),0L)) == NULL)
  279.    {
  280.      Delay(300L);
  281.      return(0);
  282.    }
  283.   if (! (pdir=(struct FileLock *)Lock(path,(ULONG)ACCESS_READ)) )
  284.   {
  285.        free_pdir();
  286.        return(0);
  287.   }
  288.   if ( ! Examine((BPTR)pdir, dir_info) )
  289.   {
  290.     free_pdir();
  291.     return(0);
  292.   }
  293.   if(ExNext((BPTR)pdir,dir_info))
  294.   {
  295.     if(dir_info->fib_DirEntryType < 0L )
  296.     {
  297.         returnval=1; strcpy(buf,dir_info->fib_FileName);
  298.     }
  299.   }
  300.    free_pdir();
  301.    FreeMem(dir_info,(long)sizeof(struct FileInfoBlock));
  302.   return(returnval);
  303. }
  304. void free_pdir(void)
  305. {
  306.    if ( pdir )
  307.       {
  308.       UnLock((BPTR)pdir);
  309.       pdir=NULL;
  310.        }
  311.    return;  
  312. }